package static关键字;

/*
一·“static”关键字概述:
    1.“static”String类判断功能概述：表示静态的
    2.“static”用于修饰类的成员：
        （1）修饰类的成员变量，这个变量就叫类变量
        （2）修饰类的成员方法，这个方法就叫类方法
    3.调用方式：
        （1） 类名.成员变量名;
        （2） 类名.成员方法名(参数);   （也可通过对象名调用，但不建议这么使用）
二·“static”关键字特点:
    1.“static”用于修饰成员变量的特点：被本类所有对象共享
    注意：随意修改静态变量的值，是有风险的。可以同时使用“final”关键字，防止静态变量的值被随意篡改。即公共静态常量（注意命名变化）
 */
public class Test {//定义一个测试类

    public static void main(String[] args) {
        Manager m = new Manager();
        m.name = "东方不败";
        m.age = 22;
        //m.work="魔教CEO";
        Manager.work = "魔教CEO";
        m.show();
        System.out.println("---------------------");

        Manager m1 = new Manager();
        m1.name = "风清扬";
        m1.age = 45;
        m1.work="华山董事";
        m.show();
        m1.show();
        System.out.println("---------------------");

        /*
            1.  若将“m1.work="华山董事";”这行代码注释掉;
                则该程序的输出结果为:
                    姓名：东方不败,年龄：22,工作：魔教CEO
                    ---------------------
                    姓名：风清扬,年龄：45,工作：null
                总结：没有使用static关键字时，以对象名进行调用赋值，这个值只对该对象负责，其他对象则不管用。
            2.  若将Manager类中的“String work;”这行代码，更改为“static String work;”。且将“m1.work="华山董事";”这行代码注释掉;
                则该程序的输出结果为:
                    姓名：东方不败,年龄：22,工作：魔教CEO
                    ---------------------
                    姓名：风清扬,年龄：45,工作：魔教CEO
                 总结：使用“static”关键字修饰成员变量，一旦某个对象对其赋值，则该值会对该类下所有创建的对象负责，起作用。
            3.  在“m.work="魔教CEO";”这行代码中，虽然也可对，对象类中的静态成员变量起作用，但不建议这么使用。
                建议方法如下：
                Manager.work="魔教CEO";//类名.成员变量名;

         */

        //测试静态方法调用静态方法
        Manager.duty();//静态main方法，调用静态duty方法
        System.out.println("---------------------");

        //测试普通方法调用静态方法
        Staff m2 = new Staff();
        m2.showDuty();

    }


}
